package com.ruoyi.tzai.service;

import java.util.List;
import com.ruoyi.tzai.domain.UserFavorite;

/**
 * 用户收藏Service接口
 * 
 * @author tzai
 * @date 2025-10-27
 */
public interface IUserFavoriteService 
{
    /**
     * 查询用户收藏
     * 
     * @param favoriteId 用户收藏主键
     * @return 用户收藏
     */
    public UserFavorite selectUserFavoriteByFavoriteId(Long favoriteId);

    /**
     * 根据用户ID和文章ID查询用户收藏
     * 
     * @param userId 用户ID
     * @param articleId 文章ID
     * @return 用户收藏
     */
    public UserFavorite selectUserFavoriteByUserIdAndArticleId(Long userId, Long articleId);

    /**
     * 查询用户收藏列表
     * 
     * @param userFavorite 用户收藏
     * @return 用户收藏集合
     */
    public List<UserFavorite> selectUserFavoriteList(UserFavorite userFavorite);

    /**
     * 新增用户收藏
     * 
     * @param userFavorite 用户收藏
     * @return 结果
     */
    public int insertUserFavorite(UserFavorite userFavorite);

    /**
     * 批量删除用户收藏
     * 
     * @param favoriteIds 需要删除的用户收藏主键集合
     * @return 结果
     */
    public int deleteUserFavoriteByFavoriteIds(Long[] favoriteIds);

    /**
     * 删除用户收藏信息
     * 
     * @param favoriteId 用户收藏主键
     * @return 结果
     */
    public int deleteUserFavoriteByFavoriteId(Long favoriteId);

    /**
     * 根据用户ID和文章ID删除用户收藏
     * 
     * @param userId 用户ID
     * @param articleId 文章ID
     * @return 结果
     */
    public int deleteUserFavoriteByUserIdAndArticleId(Long userId, Long articleId);

    /**
     * 切换收藏状态（收藏/取消收藏）
     * 
     * @param userId 用户ID
     * @param articleId 文章ID
     * @return 结果（true=已收藏，false=已取消）
     */
    public boolean toggleFavorite(Long userId, Long articleId);
}

